Remote synchronization
[!INFO] Rsync : 一个命令行工具,使用差异算法,只传输源文件和目标文件之间的差异部分。
最初很折腾
ssh-keygen -t rsa -b 4096 -C "g1169861954@gmail.com"
F:\cwrsync\.ssh\id_rsa
type F:\cwrsync\.ssh\id_rsa.pub | ssh user@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
F:\cwrsync\bin\
rsync -avz -e ./ssh /www root@hostname:/var/
rsync -avz -e "./ssh -i /.ssh/id_rsa" /www root@hostname:/var/
[!QUESTION] 同步后,Nginx 无权限访问
chown -R www-data:www-data /var/www/
chmod -R 755 /var/www/
rsync -avz -e "./ssh -i /.ssh/id_rsa" /cygdrive/f/www root@hostname:/var/
F:\cwrsync\bin\rsync -avz -e "/cygdrive/f/cwrsync/bin/ssh -i /.ssh/id_rsa" /cygdrive/f/www root@hostname:/var/
F:\cwrsync\bin\rsync -avz --chown=www-data:www-data -e "/cygdrive/f/cwrsync/bin/ssh -i /.ssh/id_rsa" /cygdrive/f/www root@hostname:/var/
F:\cwrsync\bin\rsync -avz --chown=775 -e "/cygdrive/f/cwrsync/bin/ssh -i /.ssh/id_rsa" /cygdrive/f/www root@hostname:/var/
--cvs-exclude
或 -C
是 rsync
命令的选项之一。它用于以类似于 CVS (Concurrent(并行) Versions System) 的方式自动忽略文件。.cvsignore
文件来指定应忽略的文件和目录。rsync
的 --cvs-exclude
选项允许你使用与 .cvsignore
相似的忽略规则来自动忽略文件。.cvsignore
的文件,并在其中编写你希望忽略的文件和目录规则。然后在运行 rsync
命令时,加上 --cvs-exclude
选项。
filename # 忽略特定文件
directory/ # 忽略特定目录
*.txt # 忽略所有以 .txt 结尾的文件
dir* # 忽略以 "dir" 开头的目录
/
指定特定目录下的文件:
dir/*.txt # 忽略 "dir" 目录下的所有 .txt 文件
/
指定递归忽略:
dir/ # 忽略整个 "dir" 目录及其内容
rsync -avz -C -e "./ssh -i /.ssh/id_rsa" /www root@hostname:/var/
[!NOTE]
- cwrsync 文件夹相当于一个根目录下只有 /user 文件夹的类 Linux 环境。
- 将文件复制到 cwrsync目录下,再以 Linux 风格执行命令没有问题。
- 但通过 \ 访问 Windows 路径,会将整个路径文本作为目录名输出而无法正确解析出来源路径
- 对于 rsync 命令用法,双引号会被当成主机名,而冒号会被当作远程目录。
[!WARNING] 必须指定该目录下的 ssh ,否则会冲突
待定
创建配置文件
bash
vi /etc/rsyncd.conf
内容
[dreamforest]
path = /var/www/dreamforest.com
comment = My Dream Forest
uid = nobody
gid = nogroup
read only = no
auth users = your_username
secrets file = /etc/rsyncd.secrets
创建 /etc/rsyncd.secrets
文件,并设置权限:
touch /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
/etc/rsyncd.secrets
文件中添加用户名和密码:vi /etc/rsyncd.secrets
your_username:your_password
ps aux | grep rsync
systemctl restart rsync
rsync --daemon
cd /var; mkdir www; cd www; mkdir dreamforest.com
deamon 要配置ip许可,以增加他人的访问难度 ssh密码别人可以试吗?如何确保安全? couchdb 安全吗?ssl安全吗?
ssh协议不需要额外配置‘
报错是因为 ssh 程序版本冲突,不是密钥冲突,这是从 linux 打包的 rsync,只能用适配的 ssh !就像我单独用一个 rsync.exe 无反应一样。
F:\>cwrsync\bin\rsync -avz -e ssh \Obsidian\ root@hostname:/var/www
root@hostname's password:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.2.7]
-avz source 就是默认 -ave -e ssh.
a, v, z
rsyncd.conf and rsyncd.secrets dreamforest configuration
rsyncd.conf
和 rsyncd.secrets
是用于配置和授权 rsync
服务器的两个文件。
下面是一个例子:
rsyncd.conf
motd file = /etc/rsyncd/rsyncd.motd log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid [my_module] path = /path/to/my_module comment = My Rsync Module read only = false list = true uid = my_user gid = my_group auth users = my_user secrets file = /etc/rsyncd/rsyncd.secrets
motd file = /etc/rsyncd/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[my_module]
path = /path/to/my_module
comment = My Rsync Module
read only = false
list = true
uid = my_user
gid = my_group
auth users = my_user
secrets file = /etc/rsyncd/rsyncd.secrets
motd file
:指定消息文件的路径。log file
:指定日志文件的路径。pid file
:指定进程 ID 文件的路径。[my_module]
:定义一个名为 my_module
的模块。path
:指定 my_module
的路径。comment
:指定 my_module
的注释。read only
:指定是否只读。list
:指定是否允许列出目录。uid
:指定所有者的用户名或 UID。gid
:指定所有者所属的组名或 GID。auth users
:指定允许访问 my_module
的用户。secrets file
:指定密码文件的路径。rsyncd.secrets
my_user:my_password
my_user:my_password
my_user
:指定用户名。my_password
:指定密码。以上是一个简单的 rsync
配置和授权的例子。在实际使用中,可以根据需要进行更改和扩展。
find / -name rsyncd.conf
/usr/share/doc/rsync/dreamforests/rsyncd.conf
rsync --daemon --config=/usr/share/doc/rsync/dreamforests/rsyncd.conf
kill \<PID>
F:cwrsync\bin\
rsync -avz -e ssh \Obsidian\1. 项目\ root@hostname:/var/www/dreamforest.com
使用系统 SHH:(下载并解压 cwrsync,将目录移动到同步磁盘)
守护进程方式:
F:
cwrsync\bin\rsync -avz \Obsidian\ rsync://hostname/var/www/dreamforest.com
Tabby 的命令提示真的太棒了!
本地数据:
在这个命令中,-avz
选项表示以递归模式同步文件夹,并保留文件的所有元数据,例如时间戳和权限。-e ssh
选项表示使用SSH协议进行连接。/path/to/local/folder/
是本地文件夹的路径,user
是远程服务器上的用户名,remote
是远程服务器的地址,/path/to/remote/folder/
是远程文件夹的路径。
使用rsync进行文件同步时,它会比较本地和远程文件夹的内容,并只复制差异部分,从而大大减少了同步所需的时间和网络带宽。
[!BUG] 报错,疑似 ssh 冲突,键入
where ssh
出现两个地址
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(231) [sender=3.2.7]
rsync.exe -avz -e ./ssh.exe "/f/Obsidian/0. 发布/" root@hostname:/var/www.dreamforest.com
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1336) [sender=3.2.7]
chmod -R 777 www.dreamforest.com
rsync: [sender] change_dir "/f/Obsidian/0. 发布" failed: No such file or directory (2)
弄来弄去都不知道资源路径到底为啥不对,网上也找不到资料,不用他妈的 rsync 了。SFTP 直接支持 SSH 连接。